// //参数默认值， 代码简洁， 多次调用时，看到有默认值，可以很快意识到可以省略
// //有默认值的 可能可以拿掉， 利于后期优化
// function foo(x, y = 'world') {
//   console.log(x, y);
// }

// foo('hello', 0)

// function foo(x = 5) {
//   let x = 1 //参数默认声明过了，不能够再次声明
// }

// // function foo(x, x, y) // 参数不能够重名

// function foo(x, y = 5, z) {
//   console.log(x, y, z);
// }

// foo(1, 2,3)//默认参数的位置一定要放在最后， 实参形参是按照顺序去一一对应的

// functionfoo(x, y = 5) {
//   console.log(x, y);
// }
// foo({}) // undefinded 5

// function ajax(url, {
//   body = '',
//   method = 'GET',
//   headers = {}
// } = {}) {
//   console.log(method);
// }

// function foo(x, y, z = 5) {
//   console.log(x, y);
// }
// console.log(foo.length); // foo.length 返回没有默认参数形参的个数

// let x = 1
// function foo(x, y = x) {  //如果有默认值，形参会形成一个单独作用域
//   console.log(y);  // 2
// }
// foo(2)


// function foo(y =x) {
//   let x = 2
//   console.log(y);// x is not definded
// }

// function foo() {
//   console.log(foo.name); // foo
// }

// console.log((new Function).name);  // anoymous 匿名

// function foo(x, y) {
//   console.log(this, x, y);
// }
// foo.bind({name: 'yk'})(1,2) // yk, 1, 2